package com.suanfa.collect;

/**
 * 数组做成柱状图，求两个柱围成的最大面积
 */
public class MaxArea {

    public static void main(String[] args) {
        int[] arr = {1,8,6,2,5,4,8,3,7};
        System.out.println(getMax(arr));
    }

    public static int getMax(int[] arr) {
        int area = 0;
        for(int i = 0; i< arr.length; i++){
            int l = arr[i];
            for(int j = i+1; j< arr.length; j++){
                int r = arr[j];
                area = Math.max(area, (Math.min(l, r)*(j-i)));
            }
        }
        return  area;
    }

    /**
     * 双指针法 判断哪个指针移动的时候，需判断哪个留下的价值大， 面积按照最小的高度来计算，肯定是值大的留下合适
     * @param height
     * @return
     */
    public int maxArea(int[] height) {
        int i = 0;
        int j = height.length-1;
        int area = 0;
        while(i< j){
            area = Math.max(area, Math.min(height[i], height[j]) * (j-i));

            if(height[i] <= height[j]){
                i++;
            }else{
                j--;
            }
        }
        return area;
    }
}
